#include <iostream>
#include <set>

struct rect{

    rect(int x,int y) : x(x),y(y) {};
    
    bool operator<(const rect& other) const //别忘了后面的const
    { 
        return x < other.x || x == other.x && y < other.y;
    }

    int x;
    int y;
};

/*

或者定义一个比较类cmp，cmp内部的operator函数的作用是比较rec类型a和b的大小(以x为第一关键字，y为第二关键字)：
*/
struct rectCmp{

  bool operator()(const rect& l, const rect& r)
    {
        return l.x < r.x || l.x == r.x && l.y < r.y;
    }
};

int main()
{
    rect r1(88,5);
    rect r2(52,8);
    rect r3(102,7);
    rect r4(88, 2);
    //std::set<rect, rectCmp> myset;
    std::set<rect> myset;
    myset.insert(r1);
    myset.insert(r2);
    myset.insert(r3);
    myset.insert(r4);

    for(auto &value : myset)
    {
        std::cout << "x: " << value.x << " y:" << value.y << std::endl;
    }
}